#{include 'Application/top_head.html'/} 
#{include 'Application/top_nav.html'/}

<div class="jumbotron masthead">
	
	<div class="container">
	
		<h1>REST Commander  </h1> 
<p>		
    Fast Parallel Async
        
     HTTP/<abbr title="Representational State Transfer (REST) is a style of software architecture for distributed systems such as the World Wide Web. REST has emerged as a predominant web API design model.">REST</abbr>/SOAP
      client as a service to monitor and manage 10,000 web servers.
       <br/>   
   
     Sends requests to <strong>1000</strong> servers with response aggregation in <strong>10</strong> seconds. or <strong>10,000</strong> servers in <strong>50</strong> seconds.

     <br/>
     <br/>


      <abbr title="Generic response aggregation by user-defined regular expression matching.">Response analysis</abbr>
     &nbsp;&nbsp; <abbr title="Quickly check any HTTP results from an ad hoc list of servers with generic response aggregation by regular expression matching. FAST: No dependency or setup required.">Agent-less monitor</abbr>
      &nbsp;&nbsp;<abbr title="Push uniform config or node-specific configs to HTTP end points, as long as there are HTTP (REST/SOAP) APIs to perform.">Configuration push</abbr>
      &nbsp;&nbsp; <abbr title="Discover misconfigured servers from thousands of servers with http APIs in no time.">Discover outliers</abbr>
      &nbsp;&nbsp; <abbr title="Scalable multi-step HTTP operations to thousands of HTTP endpoints.">Orchestration</abbr>
     <br/> 
       <abbr title="1. Generic HTTP request: Any HTTP/HTTPS GET/POST/PUT/DELETE request. 2. Generic response aggregation: any user defined regular expression matching. 3 Generic node specific config push or request: generic variable replacement in request parameters or APIs. ">Generic</abbr>
      &nbsp;&nbsp;    <abbr title="Hit and aggregate responses from 10,000+ servers within 1 minute from Commander running on a single server.">Scalablity</abbr>
     &nbsp;&nbsp;&nbsp;<abbr title="Code under Apache 2.0 License. ">Open Source</abbr>
     &nbsp;&nbsp; <abbr title="Response aggregation in tables. All responses are saved in standard json logs file for further analysis.">Visibility</abbr>
     &nbsp;&nbsp; <abbr title="Zero installation required. Changing command/nodes with breeze. No database setup. Run locally in a single click.">Agility</abbr>
     <br/> 
            
     <br/> 
    </p>	
	 <p>
     <i class="fa fa-magic fa-lg"></i>&nbsp; Command Wizard on &nbsp; <a href="/commands/wizard" class="btn btn-primary">Predefined Nodes</a>
     &nbsp;&nbsp;
      <a href="/wizards/wizardToAdhocNodeGroup" class="btn btn-primary" >Ad hoc Nodes</a>
    </p>
	  
     <ul class="masthead-links">
     
   
     
      <li>
        <a href="http://www.restcommander.com" target="_blank" onclick="_gaq.push(['_trackEvent', 'Jumbotron actions', 'Jumbotron links', 'Overview Poster']);">Commander Website</a>
      </li>

      <li>
        <a href="http://www.restcommander.com" target="_blank" onclick="_gaq.push(['_trackEvent', 'Jumbotron actions', 'Jumbotron links', 'Overview Poster']);">Example Video</a>
      </li>
      
      <li>
        <a href="http://www.restcommander.com" target="_blank" onclick="_gaq.push(['_trackEvent', 'Jumbotron actions', 'Jumbotron links', 'Run Instructions']);">Run Instructions</a>
      </li>
      
     

      
    </ul>
		
	</div>
</div>

  
<div class="bs-docs-social">
  <div class="container">
   <ul class="bs-docs-social-buttons">
    
      <li>
         <a href="/config/editConfig/nodegroup" class="btn btn-small" target="_blank"><i class="fa fa-pencil"></i> Edit Nodes</a>
      </li>
      
      <li>
         <a href="/config/editConfig/agentcommand" class="btn btn-small" target="_blank"><i class="fa fa-pencil"></i> Edit Commands</a>
      </li>
 
       <li>
         <a href="/config/editConfig/aggregation" class="btn btn-small" target="_blank"><i class="fa fa-pencil"></i> Edit Aggregation</a>
      </li>
      
      <li>
         <a href="/config/editConfig/httpheader" class="btn btn-small" target="_blank"><i class="fa fa-pencil"></i> Edit HTTP Header</a>
      </li>
      
      <li>
         <a href="/config/reloadConfig" class="btn btn-small" target="_blank"><i class="fa fa-refresh"></i> Reload Config</a>
      </li>
      
            
      
      
    </ul>

  </div>
</div>


<a href="https://github.com/ebay/restsuperman"  ><img style="position: absolute; top: 0; right: 0; border: 0;  z-index: 1032;" src="/public/images/fork_me_in_git_banner970x210_img.png" alt="Fork me on GitHub"></a>
  <div class="container">
<div class="row">
   
	<div class="span6">
		<div class="feat-a">
			<div class="feat">
				<h1><a href="/" style="text-decoration: none"> ${metricMap.get("totalNodeCountInDataMapValid")}</a></h1>
				<p class="lead">
				<abbr title="Number of servers with requests/response stored in 'valid data' hashmap in memory (excluding adhoc node groups). Use URL /agents/getAgentData to obtain the raw data (may be huge)">Nodes with Cmds: Predefined</abbr>
				</p>
				
			</div>
		</div>
		<div class="feat-b">
			<div class="feat">
			<h1><a href="/" style="text-decoration: none"> ${metricMap.get("totalNodeGroupCountInAdhocNodeGroup")}</a></h1>
				<p class="lead">
				<abbr title="Number of ad hoc node groups with requests stored in memory.">Node Groups: Ad hoc</abbr>
				</p>
			</div>
		</div>

		<div class="clearfix"></div>
		
		<div class="feat">
			<div class="feat">
				<h2>${metricMap.get("lastRefreshDataValid")}</h2>
				<p class="lead">Valid Data Last Refreshed</p>
			</div>
		</div>


		<div class="clearfix"></div>

	</div>
	<div class="span6">

		<div class="feat-a">
			<div class="feat">
				<h1><a href="/commands" style="text-decoration: none"> ${metricMap.get("totalCommandCountInAgentCommandMetadatas")} </a> </h1>
				<p class="lead">
				<abbr title="Number of http requests defined in /conf/agentcommand.conf">Commands in Config</abbr>
				</p>
				
				
			</div>
		</div>
		<div class="feat-b">
			<div class="feat">
			<h1><a href="/nodeGroups" style="text-decoration: none"> ${metricMap.get("totalNodeCountInNodeGroupMetadatas")}</a></h1>
				
				<p class="lead">
				<abbr title="Number of servers Commander can reach (Remove duplicated). Server list obtained in /conf/nodegroup.conf">Nodes in Config</abbr>
				</p>
				
			</div>
		</div>
		<div class="clearfix"></div>

		<div class="feat">
			<div class="feat">
			<h2>${metricMap.get("lastRefreshDataInProgress")}</h2>
				<p class="lead">InProgress Data Last Refreshed</p>
			</div>
		</div>

		<div class="clearfix"></div>
	</div>
</div>

<br/>
<div class="row">
 	<div class="span6" style="text-align: left ">
 	       
 	</div> 
 	
 	<div class="span6" style="text-align: right ">
	 	<span class="label label-info">Memory (MB) ${performaUsage.getSummary()} Free Disk (GB) ${diskUsage.getFreeSpaceGbStr()}</span>
 	</div> 
 	 <div class="span6" style="text-align: left ">
 	       
 	</div> 
 	
 	<div class="span6" style="text-align: right ">
	 <span class="label label-info">Open Source Version 2015.03.03M1  RunCron: ${metricMap.get("runCronJob")}    RunningJob# ${metricMap.get("runningJobCount")}</span> 
 	</div> 	
 	

 	
 		<div class="span6" style="text-align: left ">
 	   
 	</div> 
 	
 	<div class="span6" style="text-align: right ">
	 	<span class="label label-info"> Host ${metricMap.get("localHostName")}</span> 
 	</div> 	
</div>	

<br/><br/>
</div>	

<div class="bs-docs-social marketing">
  <div class="container">
   <br/><br/>
     <div class="row-fluid">
      
      <div class="span4">
        <h2><i class="fa fa-flash"></i> Scalable and Fast</h2>
        <p>Utilizes <a href="http://akka.io">AKKA</a> and <a href="https://github.com/AsyncHttpClient/async-http-client">Async HTTP Client</a> to maximize concurrency; Sends and aggregates responses from 10,000+ Servers within 1 minute. </p>
      </div>
    
     <div class="span4">
        <h2><i class="fa fa-magic"></i> Powerful</h2>
        <p>Sends uniform or different requests to same or different servers with near real-time reponse analysis or config pushes. Request level concurrency control.</p>
      </div>
      <div class="span4">
       <h2><i class="fa fa-check"></i> Generic</h2>
        <p>Generic <abbr title="Any HTTP/HTTPS GET/POST/PUT/DELETE request on any port with user-defined headers">HTTP</abbr> request. Generic response aggregation with user-defined regular expression matching. Generic variable replacement in request templates for server specific requests.</p>
      </div>
      
    </div>
    
    <div class="row-fluid">
        <div class="span4">
        <h2><i class="fa fa-folder-open-o"></i> Ready to Use</h2>
        <p>Agility. Zero installation required. Changing requests and target servers with breeze. No database setup. Run locally in a single click.</p>
      </div>
      <div class="span4">
        <h2><i class="fa fa-user"></i> User Friendly</h2>
        <p>Build in Java with <a href="http://www.playframework.com/documentation/1.2.4/home">Play Framework</a>, <a href="http://getbootstrap.com/2.3.2">Bootstrap</a> and its <a href="http://www.panopta.com/2013/02/06/bootstrap-application-wizard/">Application Wizard</a>, Commander enables sending requests in both easy-to-use web UI wizards and powerful <abbr title="Sample Java REST Client to Superma is provided">REST APIs</abbr>.   </p>
      </div>
      
  
 <div class="span4">
            <h2><i class="fa fa-home"></i> About </h2>
 		<p>Designed and built at <a href="http://www.ebay.com">eBay</a> by <a href="http://www.linkedin.com/in/peiyuant">Yuanteng (Jeff) Pei</a>, <a href="http://www.linkedin.com/in/thebyu">Bin Yu</a>, and <a href="http://www.linkedin.com/in/yangli907">Yang (Bruce) Li</a>, REST Commander helps managing one of the largest private cloud in the world. 
 		</p>
      </div>
    </div>
      <br/><br/>
  </div>
</div>


<div class="marketing">
  <div class="container">
   <br/><br/>
    <div class="row-fluid">
      <div class="span4">
        
        <h2><i class="fa fa-search"></i> Agent-less Monitoring</h2>
        <p>Quickly check any HTTP results from an ad hoc list of servers with generic response aggregation by regular expression matching. FAST: No dependency or setup required.</p>
      </div>
      <div class="span4">
        
        <h2><i class="fa fa-cogs"></i> Config Pushes</h2>
        <p>Push uniform config or node-specific configs to HTTP end points, as long as there are HTTP (REST/SOAP) APIs to perform.</p>
      </div>
      <div class="span4">
        
        <h2><i class="fa fa-th"></i> N Requests to 1 Target</h2>
        <p>Concurrently fire a large number of different requests to a single target server. E.g. look up thousands of jobs status in a server. Concurrency control to accommendate server capacity.</p>
       
      </div>
    </div>
     
    <br/>
      
   <div class="row-fluid">
      <div class="span4">
        
        <h2><i class="fa fa-list-ol"></i> IT Orchestration</h2>
        <p>Scalable multi-step HTTP work flows to thousands of HTTP endpoints.</p>
      </div>
      <div class="span4">
          <h2><i class="fa fa-bug"></i> Discover Outliers</h2>
       <p>Discover misconfigured servers from thousands of servers with http APIs in no time.</p>
      </div>
      <div class="span4">
       <h2><i class="fa fa-wrench"></i> Remediation Automation</h2>
       <p>If your config change requests are idepotent, Commander can easily ensure correct config by scheduled config pushes.</p>
      </div>
    </div>
      <br/><br/>
  </div>
</div>


#{include 'Application/footer_index.html'/}





</body>
</html>

